In a multi-tenant system, applications of different customers share the common hardware. Ensuring proper resource allocation for each of the customers in a multi-tenant system is a challenge. Typically, limits are set to a customer's resource utilization and load balancing is performed by balancing a resource's use across the applications, e.g., storage resource or computing resource. For example, a first customer can be allocated a first amount of storage on the multi-tenant system and a second customer can be allocated a second amount of the storage space. However, there are several drawbacks with this approach.
First, such load balancing techniques may require constant fine tuning of resource limits for the customer, e.g., if customer's resource usage increases over a period, which can be cumbersome for database administrators. Second, it is possible for the multi-tenant system to be overwhelmed by the applications hosted by it. Third, it may be difficult to guarantee resources for a given use case/customer. Fourth, it may be difficult to deal with surges in traffic, e.g., spikes in resource consumption. Finally, if every customer has stringent throttling limits, it may be difficult to make effective use of the hardware resources, as it is possible that the requests are being throttled while hardware resources are still being available.